1. Field of the Invention
The present invention relates generally to graphical data-rendering systems, and more particularly to a system and method for grabbing frames of graphical data.
2. Related Art
Graphics adapters are commonly used to render graphical data locally to a graphics display device, such as a cathode ray tube, for example. Typically, a graphics adapter interfaces with a peripheral component interconnect (PCI) local bus or an accelerated graphics port (AGP) of a computer. AGP is an interface specification designed specifically for the throughput demands of three-dimensional (3-D) graphics.
Typically, a graphics application generates graphics commands (e.g., primitives) that define an image to display. The graphics commands are transmitted to the graphics adapter, which then renders the image in response to the graphics commands. In rendering such an image, the graphics adapter translates the received graphics commands into image data and stores this image data to a frame buffer. The image data is then output from the frame buffer to a display device, which displays the image-based on the image data.
Note that an image defined by graphics commands from a graphics application may be ultimately rendered to be remotely visualized over a network connection. In this regard, a graphics application of a remote server typically generates graphics commands, as described above, and the local server transmits these commands to a remote client over a network. The remote client then utilizes a graphics adapter to render the images defined by the graphics commands. Any process for enabling a remote client to display images from a graphics application running on a local system shall be referred to herein as “remote graphical visualization” or “remote visualization.”
Transmission of the graphics commands to a remote client can introduce significant delays in performing remote graphical visualization. Indeed, in some instances, particularly when the graphics commands comprise a large amount of data, it is more efficient for the local server to render the graphics commands and to transmit, to the remote client, the rendered data in lieu of the graphics commands. Performing remote visualization in this way will be referred to hereafter as “image-based remote visualization.”
To effectuate image-based remote visualization, a frame grabber apparatus is often employed. In this regard, a graphics adapter of the local server receives graphics commands from a graphics application and renders the graphical data defined by the graphics commands to a frame buffer. A frame grabber apparatus then periodically grabs the image frame stored in the frame buffer, and each grabbed frame is transmitted over a network to a remote client, which displays each such frame.
However, current frame grabber apparatuses are not suitable for enabling all types of remote visualization. For example, conventional frame grabber apparatuses are not generally suitable for enabling remote stereographic visualization. In this regard, stereographic visualization is a relatively complex method of rendering three-dimensional graphics to a display device. During stereographic visualization, two slightly different perspectives (i.e., a left perspective and a right perspective) of the same image are combined in a frame buffer to create a stereographic three-dimensional (3-D) image frame. The left and right image perspectives are read out of the frame buffer in an alternating fashion such that the display of the stereographic image frame is quickly alternated between the left and right perspectives, and a user typically views the stereographic image frame through shutter glasses that are synchronized to provide visualization alternating between the left and right perspectives. In particular, the glasses block the user's right-eye view when the left perspective is being displayed, and the glasses block the user's left-eye view when the right perspective is being displayed.
Unfortunately, conventional frame grabber apparatuses are not designed to ensure that each grabbed frame corresponds to only one image. In this regard, if a buffer swap occurs while a frame grabber apparatus is grabbing a set of data, then the frame buffer being read by the frame grabber apparatus during the frame grab may be updated with a new image before the frame grab is complete. As a result, a portion of the grabbed frame may comprise graphical data defining the new image, and another portion of the grabbed frame may comprise graphical data defining the image previously stored in the frame buffer. Accordingly, when the grabbed frame is displayed, the displayed frame undesirably comprises portions of two different images.
Note that such a phenomena is particularly problematic for stereographic visualization. In this regard, as described above, each displayed image in stereographic visualization preferably comprises a left perspective and a right perspective of the same image. However, if a buffer swap occurs during a frame grab, then it is possible for at least one of the perspectives of a displayed frame to include graphical data defining a different image than the other perspective of the displayed frame, thereby degrading the “stereo” perception, as well as the overall quality, of the displayed image. When the graphical images are being both rendered and displayed locally, the refresh rates are usually such that the aforedescribed phenomena is not generally noticeable to a viewer. However, due to transmission delays, the refresh rates during remote visualization are often slower, and the effects of the aforedescribed phenomena usually become more pronounced.